From 7b7f8fc31095a2cf56f1b24e92ae33f95af9b27e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B6rn=20Lindqvist?= Date: Wed, 10 Sep 2008 20:21:59 +0000 Subject: [PATCH] =?utf8?q?Bug=20551699=20=E2=80=93=20gtk=5Fscrolled=5Fwind?= =?utf8?q?ow=5Fdestroy()=20is=20broken?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2008-09-10 Björn Lindqvist Bug 551699 – gtk_scrolled_window_destroy() is broken * gtk/gtkscrolledwindow.c (gtk_scrolled_window_destroy, gtk_scrolled_window_finalize): Check that the [hv]scrollbar attributes are not-NULL before destroying and unparenting them. svn path=/trunk/; revision=21341 --- ChangeLog | 8 ++++++++ gtk/gtkscrolledwindow.c | 31 ++++++++++++++----------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9df86e3991..fc85536134 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-09-10 Björn Lindqvist + + Bug 551699 – gtk_scrolled_window_destroy() is broken + + * gtk/gtkscrolledwindow.c (gtk_scrolled_window_destroy, + gtk_scrolled_window_finalize): Check that the [hv]scrollbar + attributes are not-NULL before destroying and unparenting them. + 2008-09-10 Simos Xenitellis Bug 550676 – Memory leak, update keyboard layout data structure diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index 5040337d6e..3f8d717582 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -100,7 +100,6 @@ enum }; static void gtk_scrolled_window_destroy (GtkObject *object); -static void gtk_scrolled_window_finalize (GObject *object); static void gtk_scrolled_window_set_property (GObject *object, guint prop_id, const GValue *value, @@ -192,7 +191,6 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class) widget_class = (GtkWidgetClass*) class; container_class = (GtkContainerClass*) class; - gobject_class->finalize = gtk_scrolled_window_finalize; gobject_class->set_property = gtk_scrolled_window_set_property; gobject_class->get_property = gtk_scrolled_window_get_property; @@ -786,25 +784,24 @@ gtk_scrolled_window_destroy (GtkObject *object) { GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (object); - gtk_widget_unparent (scrolled_window->hscrollbar); - gtk_widget_unparent (scrolled_window->vscrollbar); - gtk_widget_destroy (scrolled_window->hscrollbar); - gtk_widget_destroy (scrolled_window->vscrollbar); + if (scrolled_window->hscrollbar) + { + gtk_widget_unparent (scrolled_window->hscrollbar); + gtk_widget_destroy (scrolled_window->hscrollbar); + g_object_unref (scrolled_window->hscrollbar); + scrolled_window->hscrollbar = NULL; + } + if (scrolled_window->vscrollbar) + { + gtk_widget_unparent (scrolled_window->vscrollbar); + gtk_widget_destroy (scrolled_window->vscrollbar); + g_object_unref (scrolled_window->vscrollbar); + scrolled_window->vscrollbar = NULL; + } GTK_OBJECT_CLASS (gtk_scrolled_window_parent_class)->destroy (object); } -static void -gtk_scrolled_window_finalize (GObject *object) -{ - GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (object); - - g_object_unref (scrolled_window->hscrollbar); - g_object_unref (scrolled_window->vscrollbar); - - G_OBJECT_CLASS (gtk_scrolled_window_parent_class)->finalize (object); -} - static void gtk_scrolled_window_set_property (GObject *object, guint prop_id, -- 2.30.2